/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package model.interfaces;

import java.util.List;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceException;
import model.cliente.Cliente;
import model.encomendaproduto.EncomendaProduto;
import model.estoque.Estoque;
import model.excecoes.ErroDAOException;
import model.excecoes.ErroNegocioException;
import model.fornecedor.Fornecedor;
import model.funcionario.Funcionario;
import model.perfil.Perfil;
import model.produto.Produto;
import model.vendavista.VendaVista;

/**
 *
 * @author Marcos
 */
public interface IFachada {

    //Métodos do Cliente
    public void cadastrarCliente(Cliente cliente) throws ErroDAOException, ErroNegocioException, PersistenceException, NoResultException;

    public void alterarCliente(Cliente cliente) throws ErroDAOException, ErroNegocioException, PersistenceException, NoResultException;

    public void excluirCliente(Cliente cliente) throws ErroDAOException, ErroNegocioException, PersistenceException, NoResultException;

    public List<Cliente> listarCliente(String consulta, String campo) throws ErroDAOException, ErroNegocioException, PersistenceException, NoResultException;

    public boolean logarCliente(String login, String senha) throws ErroDAOException, ErroNegocioException, PersistenceException, NoResultException;

    //Métodos da Encomenda do Produto
    public void registrarEncomendaProduto(EncomendaProduto encomenda) throws ErroDAOException, ErroNegocioException, PersistenceException, NoResultException;

    public void alterarEncomendaProduto(EncomendaProduto encomenda) throws ErroDAOException, ErroNegocioException, PersistenceException, NoResultException;

    public void excluirEncomendaProduto(EncomendaProduto encomenda) throws ErroDAOException, ErroNegocioException, PersistenceException, NoResultException;

    public List<EncomendaProduto> listarEncomenda(String consulta, String campo) throws ErroDAOException, ErroNegocioException, PersistenceException, NoResultException;

    public int identificarCodigoProduto(String descricao, String marca) throws ErroDAOException, ErroNegocioException, PersistenceException, NoResultException;

    //Métodos do Estoque do Produto
    public void cadastrarProdutoEstoque(Estoque estoque) throws ErroDAOException, ErroNegocioException, PersistenceException, NoResultException;

    public void alterarProdutoEstoque(Estoque estoque) throws ErroDAOException, ErroNegocioException, PersistenceException, NoResultException;

    public void excluirProdutoEstoque(Estoque estoque) throws ErroDAOException, ErroNegocioException, PersistenceException, NoResultException;

    public List<Estoque> listarEstoque(String consulta, String campo) throws ErroDAOException, ErroNegocioException, PersistenceException, NoResultException;

    public int identificarCodigoProduto2(String descricao, String marca) throws ErroDAOException, ErroNegocioException, PersistenceException, NoResultException;

    //Métodos do Fornecedor do Produto
    public void cadastrarFornecedor(Fornecedor fornecedor) throws ErroDAOException, PersistenceException, NoResultException, ErroNegocioException;

    public void alterarFornecedor(Fornecedor fornecedor) throws ErroDAOException, PersistenceException, NoResultException, ErroNegocioException;

    public void excluirFornecedor(Fornecedor fornecedor) throws ErroDAOException, PersistenceException, NoResultException, ErroNegocioException;

    public List<Fornecedor> listarFornecedor(String consulta, String campo) throws ErroDAOException, PersistenceException, NoResultException, ErroNegocioException;

    //Métodos do Funcionário
    public void cadastrarFuncionario(Funcionario funcionario) throws ErroDAOException, PersistenceException, NoResultException, ErroNegocioException;

    public void alterarFuncionario(Funcionario funcionario) throws ErroDAOException, PersistenceException, NoResultException, ErroNegocioException;

    public void excluirFuncionario(Funcionario funcionario) throws ErroDAOException, PersistenceException, NoResultException, ErroNegocioException;

    public List<Funcionario> listarFuncionario(String consulta, String campo) throws ErroDAOException, PersistenceException, NoResultException, ErroNegocioException;

    public Funcionario logarFuncionario(String login, String senha) throws ErroDAOException, PersistenceException, NoResultException, ErroNegocioException;

    //Métodos do Perfil do Cliente
    public void cadastrarPerfil(Perfil perfil) throws ErroDAOException, PersistenceException, ErroNegocioException, NoResultException;

    public void alterarPerfil(Perfil perfil) throws ErroDAOException, PersistenceException, ErroNegocioException, NoResultException;

    public void excluirPerfil(Perfil perfil) throws ErroDAOException, PersistenceException, ErroNegocioException, NoResultException;

    public List<Perfil> listarPerfil(String consulta, String campo) throws ErroDAOException, PersistenceException, ErroNegocioException, NoResultException;

    public int identificarCodigoCliente(String cpf, String nome) throws ErroDAOException, PersistenceException, ErroNegocioException, NoResultException;

    //Métodos do Produto
    public void cadastrarProduto(Produto produto) throws ErroDAOException, ErroNegocioException, PersistenceException, NoResultException;

    public void alterarProduto(Produto produto) throws ErroDAOException, ErroNegocioException, PersistenceException, NoResultException;

    public void excluirProduto(Produto produto) throws ErroDAOException, ErroNegocioException, PersistenceException, NoResultException;

    public List<Produto> listarProduto(String consulta, String campo) throws ErroDAOException, ErroNegocioException, PersistenceException, NoResultException;

    //Métodos da Venda à Vista
    public void registrarVendaVista(VendaVista venda) throws ErroDAOException, PersistenceException, NoResultException, ErroNegocioException;

    public void alterarVendaVista(VendaVista venda) throws ErroDAOException, PersistenceException, NoResultException, ErroNegocioException;

    public void excluirVendaVista(VendaVista venda) throws ErroDAOException, PersistenceException, NoResultException, ErroNegocioException;

    public List<VendaVista> listarVenda(String consulta, String campo) throws ErroDAOException, PersistenceException, NoResultException, ErroNegocioException;

    public int identificarProduto(String descricao, String marca) throws ErroDAOException, PersistenceException, NoResultException, ErroNegocioException;
}
